// 格式化日期
export const formatDate = function(time, fmt) {
  // const date = new Date(time.replace(/-/g, '/')); // 兼容ios/safari不支持2021-04-14这种格式]
  const date = new Date(time);
  var o = {
    "M+": date.getMonth() + 1, //月份
    "d+": date.getDate(), //日
    "H+": date.getHours(), //小时
    "m+": date.getMinutes(), //分
    "s+": date.getSeconds(), //秒
    "q+": Math.floor((date.getMonth() + 3) / 3), //季度
    S: date.getMilliseconds(), //毫秒
  };
  if (/(y+)/.test(fmt))
    fmt = fmt.replace(
      RegExp.$1,
      (date.getFullYear() + "").substr(4 - RegExp.$1.length)
    );
  for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
      );
  return fmt;
};

// 格式化 年月日 2020-02-13 >> 2020年02月13日
export const formateStr = function(date, type) {
  let reg = /(\d{4})\-(\d{2})\-(\d{2})/;
  let date2 = "";
  if (!type || type === "y") {
    date2 = date.replace(reg, "$1年$2月$3日");
  } else if (type === "m") {
    date2 = date.replace(reg, "$1年$2月");
  }
  return date2;
};

// 千/万 转换 1000 >> 1k  10000 >> 1w
export const numConvert = function(num) {
  if (num >= 10000) {
    num = Math.round(num / 1000) / 10 + "w";
  } else if (num >= 1000) {
    num = Math.round(num / 100) / 10 + "k";
  }
  return num;
};

/**
 * 将时间戳转换为刚刚、N分钟前、今天几点几分、昨天几点几分等表示法
 * 用法：timestampFormat(1326170770); //2012年01月10日 12:46
 *      timestampFormat(Date.parse('2016-10-11 15:26:10')/1000); //刚刚
 */
export function timestampFormat(timestamp) {
  function zeroize(num) {
    return (String(num).length == 1 ? "0" : "") + num;
  }
  var curTimestamp = parseInt(new Date().getTime() / 1000); //当前时间戳
  var timestampDiff = curTimestamp - timestamp; // 参数时间戳与当前时间戳相差秒数

  var curDate = new Date(curTimestamp * 1000); // 当前时间日期对象
  var tmDate = new Date(timestamp * 1000); // 参数时间戳转换成的日期对象

  var Y = tmDate.getFullYear(),
    m = tmDate.getMonth() + 1,
    d = tmDate.getDate();
  var H = tmDate.getHours(),
    i = tmDate.getMinutes(),
    s = tmDate.getSeconds();

  if (timestampDiff < 60) {
    // 一分钟以内
    return "刚刚";
  } else if (timestampDiff < 3600) {
    // 一小时前之内
    return Math.floor(timestampDiff / 60) + "分钟前";
  } else if (
    curDate.getFullYear() == Y &&
    curDate.getMonth() + 1 == m &&
    curDate.getDate() == d
  ) {
    return "今天" + zeroize(H) + ":" + zeroize(i);
  } else {
    var newDate = new Date((curTimestamp - 86400) * 1000); // 参数中的时间戳加一天转换成的日期对象
    if (
      newDate.getFullYear() == Y &&
      newDate.getMonth() + 1 == m &&
      newDate.getDate() == d
    ) {
      return "昨天" + zeroize(H) + ":" + zeroize(i);
    } else if (curDate.getFullYear() == Y) {
      return (
        zeroize(m) + "月" + zeroize(d) + "日 " + zeroize(H) + ":" + zeroize(i)
      );
    } else {
      return (
        Y +
        "年" +
        zeroize(m) +
        "月" +
        zeroize(d) +
        "日 " +
        zeroize(H) +
        ":" +
        zeroize(i)
      );
    }
  }
}

/**
 * 将标准时间转换为时间戳
 * 用法：dateToTimestamp(Tue Jun 01 2021 08:00:00 GMT+0800 (中国标准时间)); //2021年05月01日 08:00:00 >> 1619827200000
 */
export function dateToTimestamp(date) {
  var timestamp = Date.parse(new Date(date));
  return timestamp;
}

/**
 * 将标准时间转换为 年-月-日
 * 用法：formateStandardTime(Tue Jun 01 2021 08:00:00 GMT+0800 (中国标准时间)); //2021年05月01日 08:00:00 >> 2021-05-01
 */
export const formateStandardTime = function(date, type, formate = "-") {
  let y = date.getFullYear();
  let m = date.getMonth() + 1;
  m = m < 10 ? "0" + m : m;
  let d = date.getDate();
  d = d < 10 ? "0" + d : d;
  if (!type || type === "y") {
    if (formate == "Chinese") {
      return y + "年" + m + "月" + d + "日";
    } else {
      return y + "-" + m + "-" + d;
    }
  } else if (type === "m") {
    if (formate == "Chinese") {
      return y + "年" + m + "月";
    } else {
      return y + "-" + m;
    }
  }
};
// 获取当月的最后一天
export const getLastDay = function(year, month) {
  const date1 = new Date(year, month, 0);
  return date1.getDate();
};

// 将0 转换为空字符串，主要是处理后台接口返回0无法匹配到相应值的时候
export const formateZero = function(data) {
  if (data != null && data && data.length === 1) {
    return data.replace(/0/g, "");
  } else {
    return data;
  }
};

// 文件大小size转换
// c 参数：表示要被转化的容量大小，以字节为单
// b 参数：表示如果转换时出小数，四舍五入保留多少位 默认为2位小数
export const formatBytes = function(a, b = 2) {
  console.log("a", a);
  console.log("b", b);
  if (0 == a) return "0 B";
  var c = 1024,
    d = b,
    e = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"],
    f = Math.floor(Math.log(a) / Math.log(c));
  return parseFloat((a / Math.pow(c, f)).toFixed(d)) + " " + e[f];
};

export const getWeekday = function(dateString) {
  // 解析字符串为 Date 对象
  var date = new Date(dateString);

  // 使用 getDay() 获取星期几
  var weekday = ["日", "一", "二", "三", "四", "五", "六"];
  return "星期" + weekday[date.getDay()];
};
